/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.ec.socialfun.controladores;

import com.ec.socialfun.datamanager.BusquedaClienteDataManager;
import com.ec.socialfun.entidades.Evento;
import com.ec.socialfun.servicios.EventoFacade;
import com.ec.socialfun.servicios.EventoUsuarioFacade;
import com.ec.socialfun.servicios.UsuarioFacade;
import com.ec.socialfun.servicios.UsuarioSucursalFacade;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.RequestScoped;
import javax.faces.model.SelectItem;
import org.jboss.logging.Logger;

/**
 *
 * @author sebas
 */
@ManagedBean
@RequestScoped
public class BusquedaClienteControlador extends PadreControlador {

    private static final Logger LOG = Logger.getLogger(BusquedaClienteControlador.class.getName());
    @EJB
    private UsuarioFacade usuarioFacade;
    @EJB
    private EventoFacade eventoFacade;
    @EJB
    private UsuarioSucursalFacade usuarioSucursalFacade;
    @EJB
    private EventoUsuarioFacade eventoUsuarioFacade;
    @ManagedProperty(value = "#{busquedaClienteDataManager}")
    private BusquedaClienteDataManager busquedaClienteDataManager;
    
    public BusquedaClienteControlador() {
    }

    @Override
    public void iniciarDatos() {
        LOG.info("Iniciar DAtos EventosSucursal antes ");
        getBusquedaClienteDataManager().setBanderaMensaje(false);
        if(eventoFacade.recuperarEventosSucursal(usuarioSucursalFacade.recuperaCodigoSucursal(obtenerUsuarioLogeado())) != null)
        {
            LOG.info("Iniciar DAtos EventosSucursal ");
            getBusquedaClienteDataManager().setListaEventos(eventoFacade.recuperarEventosSucursal(usuarioSucursalFacade.recuperaCodigoSucursal(obtenerUsuarioLogeado())));
        }
        
    }
    
    public void recuperarCliente()
    {
        LOG.info("Recuperar Cliente");
        boolean bandera;
        bandera = usuarioFacade.verificarUsuario(getBusquedaClienteDataManager().getMail());
        getBusquedaClienteDataManager().setBanderaMensaje(false);
        if(getBusquedaClienteDataManager().getEvento() != null)
        {
            if(bandera == false)
            {
                busquedaClienteDataManager.setUsuario(usuarioFacade.recuperaUsuarioPorMail(getBusquedaClienteDataManager().getMail()));
                LOG.info("EVENTO - USUARIO OK");
                LOG.info("USUARIO "+getBusquedaClienteDataManager().getUsuario().getUsNombre()+" EVENTO "+getBusquedaClienteDataManager().getEvento().getEvDescripcion());
                if(eventoUsuarioFacade.recuperarEventoUsuarioReservado(getBusquedaClienteDataManager().getEvento(), getBusquedaClienteDataManager().getUsuario()) != null)
                {
                    getBusquedaClienteDataManager().setEventoUsuario(eventoUsuarioFacade.recuperarEventoUsuarioReservado(getBusquedaClienteDataManager().getEvento(), getBusquedaClienteDataManager().getUsuario()));
                }
                else
                {
                    LOG.info("Cliente no ha reservado ningún evento");
                    this.mensajeError("Cliente no ha reservado ningún evento");
                    busquedaClienteDataManager.setBanderaMensaje(true);
                    
                }
            }
            else
            {
                LOG.info("No existe cliente");
                this.mensajeError("No existe cliente");
                busquedaClienteDataManager.setUsuario(null);
            } 
        }
        else
        {
            this.mensajeError("Seleccione un Evento");
        }
        
    }

    public BusquedaClienteDataManager getBusquedaClienteDataManager() {
        return busquedaClienteDataManager;
    }

    public void setBusquedaClienteDataManager(BusquedaClienteDataManager busquedaClienteDataManager) {
        this.busquedaClienteDataManager = busquedaClienteDataManager;
    }
    
    /**
     *
     * @return
     */
    public List<SelectItem> getSelectItemEventos() {
        List<SelectItem> lista = getSelectItemPorDefecto();
        List<Evento> listaEvento = getBusquedaClienteDataManager().getListaEventos();
        for (Evento eventoTmp : listaEvento) {
            lista.add(new SelectItem(eventoTmp, eventoTmp.getEvDescripcion()));
        }
        return lista;
    }
    
    public void seleccionaEvento() {
        LOG.info("change " +getBusquedaClienteDataManager().getEvento().getEvCodigo());
        getBusquedaClienteDataManager().setEvento(eventoFacade.recuperaPorCodigo(getBusquedaClienteDataManager().getEvento().getEvCodigo()));
        if (getBusquedaClienteDataManager().getEvento() == null || getBusquedaClienteDataManager().getEvento().getSuCodigo() == null) {
            LOG.info("EVENTO NULL");
            this.mensajeError("Seleccione un Evento");
        } else {
            LOG.info("EVENTO SELECCION: "+getBusquedaClienteDataManager().getEvento().getEvCodigo());
        }
        
        
    }
    
}
